package ln.javatest.day10.demo03;
/*
Calendar类的成员方法：
    public int get(int field):返回给定的日历字段设置为给定值。
    public void set(int field,int value):将给定的日历字段设置为给定值
    public abstract void add(int field ,int amount):根据日历的规则，为给定的日历字段添加或减去指定的时间量。
    public Date getTime()：返回一个表示此Calendar时间值（从历元到现在的毫秒偏移量）的Date对象。
成员方法的参数：
    int field:日历类的字段，可以使用calendar类的静态成员变量获取
    public static final int Year = 1;           年
    public static final int MONTH = 2;          月
    public static final int DATE = 5;           月中的某一天
    public static final int DATE_OF_MONTH = 5;  月中的某一天
    public static final int HOUR = 10;          时
    public static final int MINUTE = 12;        分
    public static final int SECOND = 13;        秒
*/

import java.util.Calendar;
import java.util.Date;

public class Demo02Calender {
    public static void main(String[] args) {
         demo01();
         demo02();
         demo03();
         demo04();
    }
    /*
    public int get(int field):返回给定的日历字段设置为给定值。
    参数：传递指定的日历字段（YEAR，MONTH...)
    返回值：日历字段代表具体的值
    */
    private static void demo01(){
        //使用getInstance方法获取Calendar对象
        //获取一个日历
        Calendar c = Calendar.getInstance();
        //获取年，返回给定日历的Year
        int year = c.get(Calendar.YEAR);
        System.out.println(year); //2022
        //获取月
        int month = c.get(Calendar.MONTH);
        System.out.println(month); //0 西方0-11，东方1-12
        int date = c.get(Calendar.DATE);
        System.out.println(date);  //9

    }
    /*
     public void set(int field,int value):将给定的日历字段设置为给定值
    参数：
        int field:传递指定的日历字段（YEAR，MONTH...)
        int value:传递的字段设置的具体的值
    */
    private static void demo02(){
        //使用getInstance方法获取Calendar对象
        //获取一个日历
        Calendar c1 = Calendar.getInstance();
        //设置年为9999
        c1.set(Calendar.YEAR,9999);
        int year1 = c1.get(Calendar.YEAR);
        System.out.println(year1);  //9999
        //同时设置年月日可以使用set重载方法
        c1.set(8888,8,8);
        int year2 = c1.get(Calendar.YEAR);
        int month1 = c1.get(Calendar.MONTH);
        int date1 = c1.get(Calendar.DATE);
        System.out.println(year2);  //8888
        System.out.println(month1); //8
        System.out.println(date1); //8
    }
    /*
   public abstract void add(int field ,int amount):根据日历的规则，为给定的日历字段添加或减去指定的时间量.
    参数：
        int field:传递指定的日历字段（YEAR，MONTH...)
        int amount:增加或者减少的值
            正数：增加
            复数：减少
    */
    private static void demo03(){
        //使用getInstance方法获取Calendar对象
        //获取一个日历
        Calendar c2 = Calendar.getInstance();
        //把年增加2年
        c2.add(Calendar.YEAR,2);
        int year = c2.get(Calendar.YEAR);
        System.out.println(year); //2024
        //把月减少3个月
        c2.add(Calendar.MONTH,-3);
        int month = c2.get(Calendar.MONTH);
        System.out.println(month); //9
    }
    /*
   public Date getTime()：返回一个表示此Calendar时间值（从历元到现在的毫秒偏移量）的Date对象。
    把日历对象转换为日期对象
    */
    private static void demo04(){
        //使用getInstance方法获取Calendar对象
        //获取一个日历
        Calendar c3 = Calendar.getInstance();
        //把年增加2年
        Date date = c3.getTime();
        System.out.println(date); //Sun Jan 09 16:30:56 CST 2022
    }
}
